package com.ml.loan.sys.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ml.loan.common.model.JsonResult;
import com.ml.loan.common.model.PageResult;
import com.ml.loan.sys.model.SysConfig;
import com.ml.loan.sys.vo.AppSwitchConfig;
import com.ml.loan.sys.vo.DomainNameConfig;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author milian
 * @since 2020-02-11
 */
public interface SysConfigService extends IService<SysConfig> {

    /**
     * 根据app查询所有配置
     *
     * @param page
     * @param limit
     * @param configName
     * @return
     */
    PageResult<SysConfig> list(Integer page, Integer limit, String configName);


    /**
     * 校验配置是否存在
     *
     * @param confKey
     * @param id
     * @return
     */
    boolean checkConfigExists(String confKey, Integer id);

    /**
     * 同步应用配置到子应用
     *
     * @param id
     * @return
     */
    boolean syncConfig(Integer id);

    SysConfig getSysConfig(String key);

    List<SysConfig> getSysConfigs(String... keys);


    /**
     * 根据key获取对应的配置对象
     *
     * @param key
     * @param clazz
     * @author caozx
     * @date 2020/8/6 14:50
     **/
    <T> T getConfigObj(String key, Class<T> clazz);

    /**
     * 根据key获取对应的配置集合对象
     *
     * @param key
     * @param clazz
     * @author caozx
     * @date 2020/6/22 17:36
     **/
    <T> List<T> getConfigList(String key, Class<T> clazz);

    String getValueByKey(String key);

    /**
     * 保存系统开关配置
     *
     * @param switchConfig
     * @return
     */
    JsonResult saveSwitchConfig(AppSwitchConfig switchConfig);
}
